package model

abstract class Lugar {
	
	@Property Boolean contieneAlVillano = false
	@Property var String nombre
	@Property var AdminPistas pistasVillano 
	
	new(String s){
		this.nombre = s
		this.deshabilitarPistas
	}
	
	override def toString(){
		this.nombre

	}
	
	def  void habilitarPistas(Pais siguientePais, Villano villanoCulpable)
	
	def  void deshabilitarPistas() {
		this.pistasVillano = new SinPistas
	}
	
	//Consulta al ocupante sobre las pistas que el lugar puede darle
	def  consultar() {
		this.pistasVillano.darPista
	}
	
	def void setVillanoOn(Villano v) {
		this.pistasVillano = new GuaridaVillano(v)
		this.contieneAlVillano = true
	}
	
	def void ultimaParada() {
		this.pistasVillano = new VillanoEnLaCiudad
	}
	
	
}

class Embajada extends Lugar {
		
	new() {
		super("Embajada")
	}
	
	override habilitarPistas(Pais siguientePais, Villano villanoCulpable) {
		this.pistasVillano = new PistaEmbajada(siguientePais)
	}	
}


class Club extends Lugar {
	
	new() {
		super("Club")
	}
	
	override habilitarPistas(Pais siguientePais, Villano villanoCulpable) {
		this.pistasVillano = new PistaClub(villanoCulpable)
	}	
	
	
}

class Biblioteca extends Lugar {
	
	new() {
		super("Biblioteca")
	}
	
	override habilitarPistas(Pais siguientePais, Villano villanoCulpable) {
		this.pistasVillano = new PistaBiblioteca(siguientePais, villanoCulpable)
	}	

	
}

class Banco extends Lugar {
	
	new() {
	 super("Banco")
	}
	
	override habilitarPistas(Pais siguientePais, Villano villanoCulpable) {
		this.pistasVillano = new PistaBanco(siguientePais, villanoCulpable)
	}	

}
